package com.sls.web.manager.game.service;

import java.util.List;

import com.sls.web.manager.game.pojo.GamePriceTemplate;
import com.sls.web.manager.game.pojo.GameSpecialPrice;
import com.sls.web.manager.game.pojo.GoodsManageInfo;
import com.sls.web.manager.game.querybean.GameSpecialPriceQuery;
import com.sls.web.manager.page.Pagination;
import com.sls.web.manager.pojo.UserInfoVO;

/**
 * 特殊价格体系Service接口层
 * 
 * @author gesx
 * 
 */
public interface GameSpecialPriceService {
	/**
	 * 新增特殊价格体系
	 * 
	 * @param gameSpecialPrice
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public boolean saveGameSpecialPrice(GameSpecialPrice gameSpecialPrice,
			UserInfoVO userInfoVO) throws Exception;

	/**
	 * 修改特殊价格体系
	 * 
	 * @param gameSpecialPrice
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public boolean updateGameSpecialPrice(GameSpecialPrice gameSpecialPrice,
			UserInfoVO userInfoVO) throws Exception;

	/**
	 * 删除特殊价格体系
	 * 
	 * @param id
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public boolean deleteGameSpecialPrice(String id, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 分页显示特殊价格体系
	 * 
	 * @param gameSpecialPrice
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public Pagination<GameSpecialPrice> queryList(
			GameSpecialPriceQuery gameSpecialPriceQuery, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 根据Id查询单条特殊价格体系
	 * 
	 * @param goodsId
	 * @param templateCode
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public GameSpecialPrice queryById(String goodsId, String templateCode,
			UserInfoVO userInfoVO) throws Exception;

	/**
	 * 查询未加入到某一价格模版下的 所有 商品编号
	 * 
	 * @param templateName
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public List<GoodsManageInfo> queryNotInSpecialPrice(String templateName,
			UserInfoVO userInfoVO) throws Exception;

	/**
	 * 校验该商品的模板是否存在
	 * 
	 * @param goodsName
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public boolean checkGoodsName(String goodsName, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 根据商品编号，查询该商品最高进价
	 * 
	 * @param goodsId
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public String queryHighInPrice(String goodsId, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 查询所有模板名称
	 * 
	 * @param gamePriceTemplate
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public List<String> queryTemplateNameList(
			GamePriceTemplate gamePriceTemplate, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 根据模板名称查询
	 * 
	 * @param templateName
	 * @param brandId
	 * @param userInfoVO
	 * @return
	 */
	public String querySpecialPrice(String templateName, String brandName,
			UserInfoVO userInfoVO);

	public List<String> queryTemplateNames(UserInfoVO userInfoVO);

	public List<GameSpecialPrice> querySpecialPriceInfo(String templateName,
			String brandName, UserInfoVO userInfoVO) throws Exception;

	public void copy(GameSpecialPrice gameSpecialPrice, UserInfoVO userInfoVO)
			throws Exception;

	public List<GameSpecialPrice> queryPriceTemplateInfoList(
			UserInfoVO userInfoVO) throws Exception;
}
